pandas数据分析42

您所在的位置:网站首页 spss documents pandas数据分析42

pandas数据分析42

2024-07-13 00:43:33| 来源: 网络整理| 查看: 265

python就是胶水语言,啥文件基本都能读取,而且pandas作为数据分析最好用的包,其功能自然也很多,可以读取各种数据文件。

本次就来演示一下怎么读取stata文件,和spss文件,他们不仅储存了数据和变量,还储存了变量的标签对应的含义,这也可以读取出来。

读取stata文件:

stata文件的后缀名是.dta,他的数据类似csv文件,但是只看英文变量名不知道什么意思。

 但是会有标签这东西:

所以我们需要读取数据,还需要处理标签。先处理标签。

先导入包:

import numpy as np import pandas as pd

读取每个变量名称和对应的中文标签:

# 读取Stata文件的元数据 metadata = pd.io.stata.StataReader('cfps2020person_202306.dta') # 获取变量标签的字典 variable_labels = metadata.variable_labels() for var, label in variable_labels.items(): print(f"Variable '{var}' has label '{label}'")

这么多变量,我们只需要一些变量,所以我们就把对应的中文名放入一个列表,然后过滤一下:

a=['工作总收入(元/年)','每周工作时间(小时/周)','雇主性质','雇主是个体工商户','是否有编制','工作地点','工作收入满意度', '工作时间满意度','一般工作7的单位/雇主性质','加载变量:受访者性别','加载变量:最近一次调查最高学历','年龄', '上哪类初中','上哪类高中','上哪类大专','上哪类本科','读硕士是脱产还是在职' ,'读博士是脱产还是在职','是否小学毕业','是否初中毕业' ,'是否高中毕业','是否大专毕业','是否本科毕业','是否硕士毕业','是否博士毕业','当前婚姻状态',] filtered_labels = {key: value for key, value in variable_labels.items() if value in a}

 这样这里面就只有我们需要的变量名称和对应的中文标签了。我们下面正式读取数据然后进行筛选。

其实读取stata也很简单,和读取csv和excel差不多,

df=pd.read_stata('cfps2020person_202306.dta',convert_categoricals=False).replace('不适用',np.nan)\ .replace(-8,np.nan).replace(-1,np.nan).replace(77,np.nan).replace(-2,np.nan) df.head()

 

替换了一些数值为空是因为他们都是不合法的值。

然后过滤出来我们需要的变量:

df=df[filtered_labels.keys()] df.info()

然后查看对应的中文标签 

{key: value for key, value in variable_labels.items() if key in df1.columns}

修改一下名称,数据就可以用了。 

df=df.set_axis(['年龄','性别','最高学历','婚姻状态','雇主性质','工作地点','工作收入满意度','工作时间满意度','每周工作时间(小时/周)','工作总收入(元/年)'],axis=1)

读取SPSS数据

spss数据是.sav文件后缀,并且数据也有对应的标签

 spss数据也可以直接读取:

data1=pd.read_spss('数据1.0.sav').drop(columns=['VAR00001']) data1

变量名称没问题,但是变量不是数值,是文本,spss里面可以显示数值,这个怎么处理呢?

用pyreadstat这个包

import pyreadstat df, meta = pyreadstat.read_sav('数据1.0.sav') df=df.drop(columns=['VAR00001']) # 查看所有变量的标签 print(meta.variable_value_labels) df.head()

 可以看到每个数值对应的中文含义都在这个文件里面。pyreadstat读取后就直接是数值型数据了。

spss里面很多999之类的数据是缺失值,所以可以这样处理:  

# 将这些特定值替换为 NaN missing_values = [98, 99, 9999996, 9999997, 9999998, 9999999] df.replace(missing_values, np.nan, inplace=True) df.shape

如果你想改变数据的含义,让他们数值映射为不同的含义,可以新自定义一个字典,写入spss数据,

new_mapping={'看电影': {5.0: '每天', 4.0: '一周数次', 3.0: '一月数次', 2.0: '一年数次或更少', 1.0: '从不'}, '幸福感': {1.0: '非常不幸福', 2.0: '比较不幸福', 3.0: '说不上幸福不幸福', 4.0: '比较幸福', 5.0: '非常幸福', 98.0: '不知道', 99.0: '拒绝回答'}, '社会交往': {1.0: '几乎每天', 2.0: '一周1到2次', 3.0: '一个月几次', 4.0: '大约一个月1次', 5.0: '一年几次', 6.0: '一年1次或更少', 7.0: '从来不', 98.0: '不知道', 99.0: '拒绝回答'}, '性别': {1.0: '男', 2.0: '女'}, '教育水平': {1.0: '没有受过任何教育', 2.0: '私塾、扫盲班', 3.0: '小学', 4.0: '初中', 5.0: '职业高中', 6.0: '普通高中', 7.0: '中专', 8.0: '技校', 9.0: '大学专科(成人高等教育)', 10.0: '大学专科(正规高等教育)', 11.0: '大学本科(成人高等教育)', 12.0: '大学本科(正规高等教育)', 13.0: '研究生及以上', 14.0: '其他(请注明)'}, '健康状况': {1.0: '很不健康', 2.0: '比较不健康', 3.0: '一般', 4.0: '比较健康', 5.0: '很健康', 98.0: '不知道', 99.0: '拒绝回答'}, '当前婚姻状况': {1.0: '未婚', 2.0: '已婚', 3.0: '离婚/丧偶'}, '家庭年收入': {9999996.0: '收入高于百万位数', 9999997.0: '不适用', 9999998.0: '不知道', 9999999.0: '拒绝回答'}} pyreadstat.write_sav(df, '洗好的data.sav', variable_value_labels=new_mapping)

 数据和对应的标签含义都写入了,很方便。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭